home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / TSR.SWG / 0030_Screen Blanker.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-03  |  2KB  |  68 lines

  1. {
  2. Screen Blanker , Tsr Example only, By Maynard Philbrook ,VGA Type
  3. From: Maynard.Philbrook@trisoft.com (Maynard Philbrook)
  4. }
  5. {$F+,S-,D-,I-,V-,R-}
  6.  {$M 1024, 0,0} { Reduce Memory to the minimum }
  7. Uses DOs;
  8. Var
  9.  OLDINT09, OLDINT08:pointer;
  10.  IsScreenOn :Boolean;
  11.  DownCounter :Word;
  12. procedure NewKeyBoardHandler; Interrupt;
  13. Begin
  14.  ASm    PushF;
  15.        Call OldInt09;
  16.        Cmp IsScreenOn, True;
  17.         Je     @Done;
  18.         Mov DX, $03C4;  { Tell VGA Card Which Reg we want "Index Reg"}
  19.         Mov AL, 01;
  20.         Out DX,AL;     { Make sure we are in the correct Regs }
  21.         Inc DX;         { Move to the Data Reg now }
  22.         IN  AL, DX;     { get the curent  value of the CLocking Mode 
  23. Reg}
  24.         And AL ,($FF-$20); { Turn off Blanker Bit }
  25.         Out DX, AL;    { Send New Value to Port, WRite it Back }
  26.         mov IsScreenOn, True;
  27. @Done:
  28.        Mov DownCounter, 50; { Set for 50 Ticks for Now }
  29.  end;
  30. end;
  31. procedure NewTimerHandler; Interrupt;
  32. begin
  33.  ASm
  34.     PushF;
  35.     Call Oldint08;
  36.     Mov BX, DownCounter;
  37.     Cmp BX, 0;
  38.     Je  @Done;
  39.     Dec        BX;
  40.     Jnz  @Done;
  41.     Mov DX, $03C4;  { Tell VGA Card Which Reg we want "Index Reg"}
  42.     Mov AL, 01;
  43.     Out DX,AL; { Make sure we are in the correct Regs }
  44.     Inc DX;         { Move to the Data Reg now }
  45.     IN  AL, DX;     { get the curent  value of the CLocking Mode Reg}
  46.     Or  AL ,$20; { Turn off Blanker Bit }
  47.     Out DX, AL;         { Send New Value to Port, WRite it Back }
  48.     Mov IsScreenOn, False;
  49. @Done:
  50.     Mov DownCounter, BX;
  51.    End;
  52. End;
  53. Begin
  54.  GetINtVec($09, OLDINT09);
  55.  GetIntVec($08, OLDINT08);
  56.  SetIntVec($09, @NewKeyBoardHandler);
  57.  SetIntVec($08, @NewTimerHandler);
  58.  IsScreenOn := True;
  59.    { The Following is a Test }
  60.  Readln;
  61.  SetIntVec($09, OldINt09); { Restore Vectors after test }
  62.  SetIntVec($08, OldINt08);
  63.  { End of Test}
  64.  { To used as a TSR Exit the program With out restoring Vectors Like
  65. So}
  66.  { KEEP(0) }
  67. End.
  68.